(define powerset
   [] -> [[]]
   [X | Y] -> (let Powerset (powerset Y)
                (append (cons-X-to-each-set X Powerset) Powerset)))

(define cons-X-to-each-set  
    _ [ ] -> [ ]  
    X [Y | Z] -> [[X | Y] | (cons-X-to-each-set X Z)])


